package commander;

import gitobject.Commit;
//import org.apache.commons.cli.*;//调用外部库帮助解析命令行参数,单元测试时使用
import java.io.File;
import java.io.PrintWriter;
/*
说明：
1、通过git commit –m [message]的命令，提交存在暂存区域的快照
2、每一次commit过后会清空暂存区
3、每次commit只会提交当前暂存区所跟踪的文件
4、commit命令会忽略在暂存区添加或删除文件后，对工作区文件进行的任何修改
5、每次commit应当保存提交时间与提交人信息
6、在commit命令之后，将当前HEAD指针（存储在.jit/HEAD中）指向该commit；而当前的commit则指向上一次commit。（链表）
7、提交命令，index中的文件连接commit指针，头插法插入分支
 */

public class commit extends Command{
    public void commit( String author, String committer, String message) throws Exception{
        Commit c = new Commit(this.index, author, committer, message);
        File branch  = new File(c.getBranch());
        //生成Commit节点,入参顺序为文件路径、作者、提交者、版本信息
        //c.writeObject();
        // clear index
        PrintWriter p = new PrintWriter(this.index);
        p.print("");
        p.close(); // clear index
    }
    /*public static void main(String[] args){

        try {
            Options options = new Options();
            CommandLineParser parser = new DefaultParser();
            options.addOption(new Option("m",true,"description for command"));
            options.addOption(new Option("a",true,"author"));
            options.addOption(new Option("c",true,"committer"));
            CommandLine cmd = parser.parse( options, args);
            String comment = cmd.getOptionValue("m");
            String author = cmd.getOptionValue("a");
            String committer = cmd.getOptionValue("c");
            new commit().commit(author, committer, comment);
        }
        catch (Exception e){
            e.printStackTrace();
        }
    }*/
}